The World Wide Web Consortium (W3C), which is the main international standards organization for the World Wide Web, has defined a “web service” as a software system designed to support interoperable machine to machine interaction over a network. That is, web services may refer to web-based applications that interact with other web-based applications in order to provide a desired service. For example, application software on a user's desktop computer (e.g., Microsoft™ Money) may send messages via the Internet to a stock quote server in order to retrieve current stock quotes for selected stocks. The application software may then display the retrieved information within the application for the user. Other examples of common web services include banking, currency converters, airplane flight schedule lookups, auction services and language translation services.
As discussed above, a web service may refer to software system designed to support interoperable machine to machine interaction over a network. One machine may be referred to as the “client.” The client refers to the machine that requests a service. The request from the client may be received by what is referred to as an “enterprise service bus” which acts as an intermediary between the client and a machine, referred to as the “provider,” which provides the requested service. The enterprise service bus may also be referred to as a “message broker” where the message broker is an intermediary program that transforms the message from the client to the provider thereby allowing the provider and the client to send data back and forth to each other. For example, the client's service request may be transformed from the Simple Object Access Protocol (SOAP)-standard over HyperText Transfer Protocol (HTTP) format to the SOAP over Java Messaging Service (JMS) format in order for the provider to service the client's request if the formal messaging protocol of the provider is JMS instead of HTTP.
In addition to transforming the client's message, the enterprise service bus may further determine which “provider” services the client's request. This specific provider may be referred to as an “endpoint.” That is, the enterprise service bus identifies the endpoint, which is the machine that provides the services requested by the client. The enterprise service bus may identify the endpoint by obtaining what is referred to as “service meta-data.” Service meta-data may refer to data that identifies the endpoint as well as how to invoke that endpoint. The service meta-data may be stored in a database referred to herein as the “service registry.”
For each service request it receives from the client, the enterprise service bus accesses the service registry to obtain the appropriate service meta-data in order to determine which endpoint to service the client's request as well as how to invoke that endpoint. By having to access the service registry to determine which endpoint to service the client's request for every client request, network traffic is greatly increased and may cause the enterprise service bus to be unable to meet the system's quality of service requirements. If, however, the enterprise service bus did not have to access the service registry each time it received a service request form the client, then the network traffic would be lessened and the performance of the enterprise service bus would be improved.
Therefore, there is a need in the art to improve the performance of the enterprise service bus by reducing the number of accesses to the service registry in connection with servicing a client's request.